package com.aistar.service.employer;

import com.aistar.model.dto.employer.InterviewDTO;
import com.aistar.model.dto.employer.TagAndTypeDTO;
import com.aistar.model.entity.Recruitment;
import com.aistar.model.entity.Tag;

import java.util.List;

/**
 * @ClassName: IEmployerRecruitmentService
 * @author: LiuWenXiu
 * @date: 2021/10/1 15:55
 * @Description: TODO...
 */
public interface IEmployerRecruitmentService {

    /**
     * 加载该招聘者id发布的职位信息
     *
     * @param employerId 招聘者id
     * @return
     */
    List<Recruitment> loadMyPostRecruitment(Integer employerId);


    /**
     * 分页加载该招聘者发布的职位信息
     *
     * @param employerId 招聘者id
     * @param pageNum    当前页
     * @param pageSize   页面大小
     * @return
     */
    List<Recruitment> loadMyPostRecruitmentByPage(Integer employerId, Integer pageNum, Integer pageSize);

    /**
     * 根据职位id加载职位内容
     *
     * @param id 职位id
     * @return
     */
    Recruitment getRecruitmentById(Integer id);

    /**
     * 根据职位id刷新职位发布时间
     *
     * @param id 职位id
     * @return
     */
    int updateReleaseTimeById(Integer id);

    /**
     * 根据职位修改职位信息
     *
     * @param recruitment 职位实体
     * @return
     */
    int updateRecruitmentById(Recruitment recruitment, String tagsIds);


    /**
     * 根据职位id逻辑删除职位
     *
     * @param id 职位id
     * @return
     */
    int delRecruitmentById(Integer id);


    /**
     * 根据职位id数组逻辑删除多个职位
     *
     * @param ids 多个职位数组名
     * @return 返回受影响行数
     */
    int delRecruitmentBatchById(String ids);


    /**
     * 根据招聘者id加载所有邀约面试信息
     *
     * @param id 招聘者id
     * @return
     */
    List<InterviewDTO> loadInterview(Integer id);

    /**
     * 根据招聘者id分页加载所有邀约面试信息
     *
     * @param id    招聘者id
     * @param page  当前页面
     * @param limit 每页条数
     * @return
     */
    List<InterviewDTO> loadInterviewByPage(Integer id, Integer page, Integer limit);

    /**
     * 根据职位id加载该职位的标签
     *
     * @param recruitmentId 职位id
     * @return
     */
    List<Tag> loadTagByRecruitmentId(Integer recruitmentId);

    /**
     * 加载所有的类别的标签
     *
     * @return
     */
    List<TagAndTypeDTO> loadTagByType();


    /**
     * 根据职位信息
     *
     * @param tagIds
     * @return
     */
    int createNewRecruitment(Integer employerId, Recruitment recruitment, String tagIds);


//    /**
//     * 加载所有标签
//     * @return
//     */
//    List<Tag> loadAllTag();
//
//    /**
//     * 根据标签类别id查询不同类型的标签
//     * @param id 标签类别id
//     * @return
//     */
//    List<Tag> loadTagByType(Integer id);

}
